package com.gadgets.busi.bm08.service;

import com.gadgets.busi.bm08.common.dto.QuestionGroupDTO;
import com.gadgets.busi.bm08.common.dto.QuestionQueryDTO;
import com.gadgets.busi.bm08.common.dto.QuestionResultDTO;
import com.gadgets.busi.bm08.common.dto.QuestionTotalDTO;
import com.gadgets.busi.bm08.pojo.HdsQstSelection;
import com.gadgets.busi.bm08.pojo.HdsQuestion;
import com.gadgets.framework.common.exception.GadgetsServiceException;

import java.util.List;

/**
 * 功能说明：
 * 软件版权：恒生电子股份有限公司
 *
 * @author xiujunqing
 * @version V202101.00.000
 * @data 2022-04-19
 * 修改记录：  修改日期          修改人员    修改说明
 * 2022-04-19  xiujunqing   创建文件
 */
public interface IQuestionManageService {

    /**
     * 保存题目
     * @param question                  题目信息
     * @param selectionList             选项/答案信息
     * @throws GadgetsServiceException  异常信息
     */
    void saveQuestion(HdsQuestion question, List<HdsQstSelection> selectionList) throws GadgetsServiceException;

    /**
     * 查询全部题目ID
     * @param queryDTO                  查询条件
     * @return                          查询结果
     * @throws GadgetsServiceException  异常信息
     */
    List<Long> selectQuestionIdList(QuestionQueryDTO queryDTO) throws GadgetsServiceException;

    /**
     * 根据ID查询题目信息
     * @param id                        题目ID
     * @return                          查询结果
     * @throws GadgetsServiceException  异常信息
     */
    QuestionResultDTO selectQuestionResultById(Long id) throws GadgetsServiceException;

    /**
     * 查询题目汇总信息
     * @return          汇总信息
     * @throws GadgetsServiceException  异常信息
     */
    List<QuestionTotalDTO> selectQuestionTotal() throws GadgetsServiceException;

    /**
     * 分组统计题目信息
     * @return 分组信息
     * @throws GadgetsServiceException 异常信息
     */
    List<QuestionGroupDTO> selectQstGroupingInfo() throws GadgetsServiceException;

    /**
     * 根据题目题型查询题目列表
     * @param type 题目类型
     * @return 查询结果
     * @throws GadgetsServiceException 异常信息
     */
    List<HdsQuestion> selectQstGenerateInfoByType(String type) throws GadgetsServiceException;

}
